package com.elysia.newsservice.controller;

import com.elysia.newsservice.domain.dto.UpdateLogDTO;
import com.elysia.newsservice.domain.vo.UpdateLogTotalVO;
import com.elysia.newsservice.result.Result;
import com.elysia.newsservice.service.impl.IUpdateLogServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

/**
 * 更新日志控制层
 **/
@RestController
@RequestMapping("/update-log")
@RequiredArgsConstructor
@Slf4j
public class UpdateLogController {
    private final IUpdateLogServiceImpl updateLogService;
    /**
     * 获取全部更新日志
     * @return 全部更新日志
     */
    @GetMapping
    public Result<UpdateLogTotalVO> getAllUpdateLog() {
        log.info("获取全部更新日志");
        return updateLogService.getAllUpdateLogs();
    }
    /**
     * 添加更新日志
     * @param updateLogDTO 更新日志信息
     * @return 添加结果
     */
    @PostMapping
    public Result<UpdateLogTotalVO> addUpdateLog(@RequestBody UpdateLogDTO updateLogDTO) {
        log.info("添加更新日志{}", updateLogDTO);
        return updateLogService.addUpdateLog(updateLogDTO);
    }

    /**
     * 删除更新日志
     * @param id 所需更新日志ID
     * @return 删除结果
     */
    @DeleteMapping("/{id}")
    public Result<String> deleteUpdateLog(@PathVariable Long id) {
        log.info("删除更新日志{}", id);
        return updateLogService.deleteUpdateLog(id);
    }
    /**
     * 修改更新日志
     * @param id 所需更新日志ID
     * @param updateLogDTO 修改信息
     * @return 修改结果
     */
    @PutMapping("/{id}")
    public Result<String> updateUpdateLog(@PathVariable Long id, @RequestBody UpdateLogDTO updateLogDTO) {
        log.info("修改更新日志{}: {}", id, updateLogDTO);
        return updateLogService.updateUpdateLog(id, updateLogDTO);
    }
}
